During the last decade, almost all the world's exchanges and marketplaces have introduced electronic trading systems. These systems either replace the traditional trading floors or are used as complements to them. Today a large number of exchanges throughout the world utilizes electronic trading to trade stocks, bonds, futures, options and other financial instruments. These electronic exchanges are generally includes three basic components, namely mainframe computers (host), communication servers, and the exchanges participants computers (client). The host constitutes, so to speak, the heart of the electronic trading system. The hosts operations includes, for example, order-matching, maintaining order books and positions or price information. Participants, e.g. traders, are capable of communicating with the host by means of high speed data lines, high speed communications servers and the Internet. Thus, the traders can participate in the market by means of the clients communicating with the host.
In order to secure system availability, the exchangers system often uses two server placed in two geographically different spots interconnected via a network. One of the servers is considered being the primary server and the other consequently as the secondary. The system will be operational with only one server acting as primary, but will then, of course, not be redundant. The primary server will accept incoming messages, store them to disk in a log file and replicate the message to the secondary node or server. The two servers then perform the same business logic procedure based on the incoming message. This results in the two servers being synchronized and having the same application state, i.e. each transaction has the same state with respect to, for example, price or volume of a stock.
If the primary server fails for some reason, the secondary server is accordingly able to take over and take the role as primary node and accept incoming messages. On the other hand, if the secondary server fails for some reason, the primary server just continuous to operate. According to a more severe scenario both servers fail for some reason. In this case, the application state of the system will be restored using a recovery procedure. According to this recovery procedure, one of the servers is restarted and reads its log file and restore its application state based on the information contained in the log file. Thereafter, the second server is started. It will perform a so-called catch-up procedure including requesting all needed information from the first server to restore its application state to be synchronized with the first server. This information is sent over the network interconnecting the both servers. When all catch-up information has been received by the second server, it signals the first server informing it that it is now synchronized with the first server. The server pair is now regarded as fully functional and as a redundant server pair. The log file for a server can be large and the time required for a single server to read its log file and recover its state can take a long time, ranging from a few minutes up to several hours. In addition, when the second server requests the catch-up procedure, the load on the active server is increased and the may also be a significant amount of traffic in the network. Consequently, the load on the servers and the network may be significant during a recovery procedure.
Thus, there is need of an improved system and a method for recovering a trading system.